package DAO;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import DBConection.ConexionBD;
import Modelo.Categoria;
import Modelo.Persona;

public class CategoriaDao {

	private Connection conn;

	public CategoriaDao() {
		conn = ConexionBD.getConnection();
	}

	public void addCategoria(Categoria objcategoria) {

		try {
			//insert into Tbl_Categorias (categoriaid,nombre,descripcion) values (categoriaid.NextVal,'hola','hola');
			String sql = "INSERT INTO "+ConexionBD.getNombre_BD()+".Tbl_Categorias (nombre,descripcion)"
					+ " values (?,?)";
			PreparedStatement ps = conn.prepareStatement(sql);
			ps.setString(1, objcategoria.getNombre());
			ps.setString(2, objcategoria.getDescripcion());
			ps.executeUpdate();

		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

	public void removeCategoria(int CategoriaId) {
		try {
			String sql = "DELETE FROM "+ConexionBD.getNombre_BD()+".TBL_categorias WHERE categoriaId=?";
			PreparedStatement ps = conn.prepareStatement(sql);
			ps.setInt(1, CategoriaId);
			ps.executeUpdate();

		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

	public void editCategoria(Categoria objcategoria) {
		try {
			String sql = "UPDATE "+ConexionBD.getNombre_BD()+".TBL_Categorias SET Nombre=?, Descripcion=?"
					+ " WHERE categoriaId=?";
			PreparedStatement ps = conn.prepareStatement(sql);

			ps.setString(1, objcategoria.getNombre());
			ps.setString(2, objcategoria.getDescripcion());
			ps.setInt(3, objcategoria.getCategoriaId());
			ps.executeUpdate();

		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

	public List<Categoria> getAllCategorias() {
		List<Categoria> categorias = new ArrayList<Categoria>();
		try {
			String sql = "SELECT * FROM "+ConexionBD.getNombre_BD()+".TBL_Categorias";
			PreparedStatement ps = conn.prepareStatement(sql);
			ResultSet rs = ps.executeQuery();
			while (rs.next()) {
				Categoria objcategoria = new Categoria();
				objcategoria.setCategoriaId(rs.getInt("categoriaId"));
				objcategoria.setNombre(rs.getString("Nombre"));
				objcategoria.setDescripcion(rs.getString("Descripcion"));
				categorias.add(objcategoria);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}

		return categorias;
	}

	public Categoria getCategoriaById(int categoriaId) {
		Categoria objcategoria = new Categoria();
		try {
			String sql = "SELECT * FROM "+ConexionBD.getNombre_BD()+".TBL_Categorias WHERE categoriaId=?";
			PreparedStatement ps = conn.prepareStatement(sql);
			ps.setInt(1, categoriaId);
			ResultSet rs = ps.executeQuery();

			if (rs.next()) {
				objcategoria.setCategoriaId(rs.getInt("categoriaId"));
				objcategoria.setNombre(rs.getString("Nombre"));
				objcategoria.setDescripcion(rs.getString("Descripcion"));
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return objcategoria;
	}

}
